An I/O (input and output) port of a CPU (central processing unit) holds a fetch request or a store request supplied from an external I/O device, and supplies such a request to a memory controller. The I/O port further transmits store data to the memory controller in response to a data read request from the memory controller in the case of a store request.
The I/O port includes a request port and a data port. The request port holds the header of each request. The request port may transmit a request to the memory controller, may monitor a time-out period, and may guarantee the order of requests. The data port holds data of each request. Upon receiving a data read request from the memory controller, the data port transmits data corresponding to the read request to the memory controller.
In order to prevent the overflow of requests upon arrival of a larger number of requests than the resources of the I/O port, the number of requests transmitted to the I/O port may be controlled. Methods of controlling the number of requests transmitted to an I/O port include a credit-based control method. In the credit-based control method, an I/O device of a buffer in an I/O interface has a credit value assigned thereto. The credit value increases each time a request is transmitted to the I/O port, and decreases each time one of the resources of the I/O port is released. With this arrangement, the number of resources available at the I/O port, i.e., the number of requests that can be received by the I/O port, is monitored to control the number of transmitted requests, thereby avoiding the overflow of the I/O port.
When the number of requests is to be controlled, the number of requests receivable may be controlled based on the volume of a data port, or the number of requests may be controlled based on the volume of a request port. In the case of control based on the volume of a data port, a request port may need to have a large volume in order to cope with a case in which a large number of fetch requests relating to small packet size occur. In the case of control based on the volume of a request port, a data port may need to have a large volume sufficient to store data for all the received requests in order to cope with a case in which a large number of store requests relating to large packet size occur.
In consideration of this, the number of requests may be controlled based on the buffer data size of the data port and the number of requests of the request port by taking into account performance and a balance of the physical amounts of hardware units. In such a method, however, when requests of one type, i.e., either a fetch request or a store request, is temporarily issued in a far larger number than the other type of request, resources may not be fully utilized, or a sufficient amount of resources for achieving desired performance may not be present, which may be problematic.    [Patent Document 1] Japanese Patent Application Publication No. 2000-124953